home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 6 / Tiger_Disk_006_19xx_Tiger-Crew-Disk_de_Side_B.d64 / 11 mk (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  7KB  |  179 lines

  1. 8 clr
  2. 10 u$="[197][197][197][197][197][197][197][197][197][197]":o$="[164][164][164][164][164][164][164][164][164]":i$="input-routine":b$=" bildschirm"
  3. 100 rem beispiel 1
  4. 101 data 162,0,32,207,255,157,0,128,232,201,13,208,245,96
  5. 108 rem beispiel 2
  6. 109 data 32,207,255,170,169,13,32,210,255,224,74,240,4,224,78,208,239,96
  7. 114 rem aufgabe 3
  8. 115 data 162,0,32,207,255,201,32,240,249,157,0,128,232,201,13,208,241,96
  9. 200 print"[147][164][164][164]";o$;o$;o$;o$:print"syntax-lehrgang 'maschinensprache' (11)
  10. 210 [153]"totototo";o$;o$;o$:[153]"2.2. eingabe ueber die tastatur
  11. 220 print"nachdem wir in den beiden letzten lehr-
  12. 230 [153]"gaengen  etwas  ueber  die  ausgabe von
  13. 240 print"daten auf dem"b$" gelernt haben,
  14. 250 [153]"sehen wir uns nun die eingabe von daten
  15. 260 print"ueber die tastatur an.
  16. 270 [153]"eine  sehr einfache  loesung bietet die
  17. 280 printi$" des betriebssystems.  sie
  18. 290 [153]"hat die einsprungadresse $ffcf.
  19. 300 restore:fori=0to49:readx:poke912+i,x:next
  20. 310 i=1:gosub5000:ifflthen200
  21. 400 print"[147]die inputroutine wird mit  'jsr  $ffcf'":printtab(28);u$
  22. 410 print"aufgerufen (dezimal: 65487).
  23. 420 [153]"ab dem einsprung in diese routine  wer-
  24. 430 print"den von der tastatur zeichen angenommen
  25. 440 [153]"und  auf dem"b$"  hintereinander
  26. 450 print"ausgegeben.   das laeuft genauso ab wie
  27. 460 [153]"beim basic-befehl 'input'.
  28. 520 i=2:gosub5000:ifflthen200
  29. 600 print"[147]der ruecksprung  aus der  "i$
  30. 605 print"erfolgt  bei druecken der taste return.
  31. 606 [153]"im ac steht dabei das erste zeichen.
  32. 610 print"springt man  die routine dann  nochmals
  33. 615 [153]"an, so wird kein input ausgeloest, son-
  34. 620 print"dern es erfolgt  ein sofortiger  rueck-
  35. 630 [153]"sprung  mit  dem  zweiten  eingegebenen
  36. 640 print"zeichen im ac.   die "i$" wird
  37. 650 [153]"nun immer wieder angesprungen. jedesmal
  38. 660 print"erfolgt sofort  der ruecksprung mit dem
  39. 670 [153]"naechsten zeichen im ac.
  40. 720 i=3:gosub5000:ifflthen400
  41. 800 print"[147]wenn auf diese weise das letzte zeichen
  42. 805 [153]"(also das 'return') abgerufen wurde,be-
  43. 810 print"wirkt  ein nochmaliges   anspringen der
  44. 815 [153]i$" wieder einen input.
  45. 820 print"ebenso  kann man das abrufen der einge-
  46. 830 [153]"gebenen zeichen unterbrechen, indem man
  47. 840 print"mit der printroutine ein  'return' aus-
  48. 850 [153]"gibt.
  49. 860 print"das erscheint anfangs  kompliziert, ist
  50. 870 [153]"es aber nicht.  sehen wir uns  ein bei-
  51. 880 print"spiel an:
  52. 930 i[178]4:[141]5000:[139]fl[167]600
  53. 1000 [153]"loadbeispiel:":[153]u$
  54. 1010 [153]"mit  der "i$" soll  eine folge
  55. 1020 print"von zeichen ueber die tastatur eingege-
  56. 1030 [153]"ben werden.close  die zeichen sollen  nicht
  57. 1040 print"sofort weiterverarbeitet sondern zuerst
  58. 1050 [153]"zwischengespeichert werden. wir waehlen
  59. 1060 print"als zwischenspeicher die speicher $8000
  60. 1070 [153]"und folgende.   da dort der"b$"-
  61. 1080 print"speicher liegt,   sehen wir  direkt den
  62. 1090 [153]"zeitlichen ablauf.
  63. 1130 i=5:gosub5000:ifflthen800
  64. 1200 print"[147]das programm:
  65. 1210 [153]"   ldx #$00     zaehler initialisieren
  66. 1220 print" [176][192]jsr $ffcf    aufruf der inputroutine
  67. 1240 [153]" (NULL)cmd(NULL) sta $8000,x  nach $8000+x speichern
  68. 1250 print" [221][157][221] inx          x=x+1
  69. 1260 [153]" (NULL)cmd(NULL) cmp #$0d     (ac) = 'return' ?
  70. 1270 print" [221][157][173]_bne $f5      nein: naechstes zeichen
  71. 1275 [153]"                      in ac holen
  72. 1280 print"   rts          ja: ruecksprung
  73. 1290 [153]"nun eine demonstration:
  74. 1320 i=6:gosub5000:ifflthen1000
  75. 1400 print"[147]                                        ";
  76. 1410 print"                                        "
  77. 1415 print"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]
  78. 1420 [153]"geben sie nun einige zeichen ein. dabei
  79. 1430 print"stehen ihnen auch die cursorsteuerungen
  80. 1440 [153]"'inst' und 'del' zur verfuegung.
  81. 1450 print""
  82. 1460 sys 912:rem beispiel 1
  83. 1465 forw=0to999:next
  84. 1470 print"":ifn7then1500
  85. 1475 print"da die eingabe in ascii,die ausgabe je-
  86. 1480 [153]"doch im"b$"code erfolgt, stimmen
  87. 1485 print"die eingegebenen  und  die ausgegebenen
  88. 1490 [153]"zeichen allerdings nicht ueberein.  das
  89. 1495 print"soll uns hier nicht weiter stoeren.":n7=1:goto1530
  90. 1500 gosub10000
  91. 1515 ifx$="j"then1400
  92. 1530 i=7:gosub5000:ifflthen1200
  93. 1600 print"[147]beachten sie besonders folgendes:
  94. 1620 [153]"1. die ausgabe  erfolgt erst,  wenn die
  95. 1625 print"   eingabe durch 'return' beendet ist.
  96. 1630 [153]"2. das letzte  uebergebene zeichen  ist
  97. 1635 print"   immer ein 'return'.   im "b$
  98. 1640 print"   erscheint es  als 'm' stets  am ende
  99. 1650 [153]"   der kette ausgegebener zeichen.
  100. 1660 print"3. die anzahl  der zeichen   ist auf 79
  101. 1670 [153]"   begrenzt.
  102. 1680 print"blaettern sie zurueck und ueberzeugen
  103. 1685 [153]"sie sich!
  104. 1710 i=8:gosub5000:ifflthen1400
  105. 1800 print"[147]oft werden die eingegebenen zeichen gar
  106. 1810 [153]"nicht zwischengespeichert,  sondern so-
  107. 1820 print"fort bearbeitet.
  108. 1830 [153]"beispiel:":[153]u$
  109. 1840 [153]"sie habenclose inclose ihrem closemaschinenprogramm
  110. 1850 print"eine ja/nein-abfrage und wollen nur ei-
  111. 1860 [153]"nen buchstaben  (naemlich 'j' oder 'n')
  112. 1870 print"ueber die tastatur eingeben und je nach
  113. 1880 [153]"eingabe zu verschiedenen programmteilen
  114. 1890 print"springen.andere buchstaben als j oder n
  115. 1900 [153]"sollen unterdrueckt werden.
  116. 1910 i=9:gosub5000:ifflthen1600
  117. 2000 print"[147]hier das programm:
  118. 2005 [153]"ortantanjsr $ffcf    erstes zeichen einlesen
  119. 2010 print"[221][157][221]  tax          in xr schieben
  120. 2020 [153]"(NULL)cmd(NULL)  lda #$0d     (ac)='return'
  121. 2040 print"[221][157][221]  jsr $ffd2    abbruch des input
  122. 2050 [153]"(NULL)cmd(NULL)  cpx #$4a     ist es ein 'j'?
  123. 2055 print"[221][157][221][176]_beq $04      ja: ende
  124. 2060 [153]"(NULL)(NULL)cmdcmd(NULL)(NULL) cpx #$4e     ist es ein 'n'?
  125. 2070 print"[221][221][157][157][173][192]_bne $ef      nein: von vorne
  126. 2090 [153]" (NULL)cmd/tanrts          ruecksprung mit zeichen
  127. 2100 print"                im xr
  128. 2110 i[178]10:[141]5000:[139]fl[167]1800
  129. 2200 [153]"loaddas programm liest  ein wort  ueber die
  130. 2220 print"tastatur ein.  der erste buchstabe wird
  131. 2230 [153]"auf 'j' und 'n' geprueft.   liegt einer
  132. 2240 print"dieser  beiden  buchstaben vor,  so er-
  133. 2250 [153]"folgt der ruecksprung   mit dem zeichen
  134. 2260 print"'j' (=$4a) oder 'n' (=$4e) im xr.   an-
  135. 2270 [153]"dernfalls wird die eingabe wiederholt.
  136. 2280 print"dem programm  wuerde nun noch  die ver-
  137. 2290 [153]"zweigung in abhaengigkeit  von der ein-
  138. 2295 print"gabe folgen.   das sollten sie sich als
  139. 2300 [153]"uebungsaufgabe ueberlegen.
  140. 2310 i=11:gosub5000:ifflthen2000
  141. 2400 print"[147]nun eine demonstration:":printu$;u$;"[197][197][197]"
  142. 2410 print"probieren sie insbesondere,was bei fal-
  143. 2420 [153]"schen eingaben passiert ! (z.b.'return'
  144. 2430 print"oder andere buchstaben als j und n).
  145. 2440 [158] 926:[143] beispiel 2
  146. 2445 [153]"ok - jetzt kam der ruecksprung.
  147. 2450 gosub10000
  148. 2480 ifx$="j"then2400
  149. 2510 i=12:gosub5000:ifflthen2200
  150. 2600 print"[147]aufgaben:":printu$
  151. 2610 print"1. schreiben sie  hinter das letzte pgm
  152. 2620 [153]"   eine abfrage,  welcher fall vorliegt
  153. 2630 print"   mit entsprechender verzweigung.
  154. 2640 [153]"2. was passiert,wenn sie im letzten pgm
  155. 2650 print"   die  dritte und  vierte  zeile  weg-
  156. 2660 [153]"   lassen ?
  157. 2670 print"3. erweitern sie das pgm im ersten bei-
  158. 2680 [153]"   spiel derart,  dass alle leerzeichen
  159. 2690 print"   unterdrueckt werden.
  160. 2710 i[178]13:[141]5000:[139]fl[167]2400
  161. 2810 [153]"loaddie loesung fur aufgabe 3 finden sie im
  162. 2820 print"ram ab 944.
  163. 2910 [153]"- seite 14 -  <+> ontotototocmdcmdcmdcmdendewait <-> von vorne"
  164. 3060 [141]5020:[145]fl[137]0
  165. 3070 [128]
  166. 5000 [143] umblaettern
  167. 5010 [153]"  - seite";i;"-  <+> weiter  <-> zurueck";
  168. 5020 [129]i[178]0[164]11:[161]x$:[130]
  169. 5030 [161]x$:[139]x$[178]""[167]5030
  170. 5040 [139]x$[178]"+"[167]fl[178]0:[142]
  171. 5050 [139]x$[178]"-"[167]fl[178]1:[142]
  172. 5060 [137]5030
  173. 10000 [153]"nochmal (j/n) ?";:[129]i[178]0[164]11:[161]x$:[130]
  174. 10010 [129]i[178]0[164]11:[161]x$:[130]
  175. 10020 [161]x$:[139]x$[178]""[167]10020
  176. 10030 [139]x$[178]"n"[167][153]" nein":[142]
  177. 10040 [139]x$[179][177]"j"[167]10020
  178. 10050 [142]
  179.